package com.mark.system.service.impl;

import com.mark.basic.service.Impl.BaseServiceImpl;
import com.mark.org.domain.Department;
import com.mark.system.domain.Menu;
import com.mark.system.mapper.MenuMapper;
import com.mark.system.service.IMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author mark
 * @since 2022-04-06
 */
@Service
public class MenuServiceImpl extends BaseServiceImpl<Menu> implements IMenuService {
    @Autowired
    private MenuMapper menuMapper;
    @Override
    public List<Menu> queryTree() {

        // 查询所有的数据
        List<Menu> menuAll = menuMapper.listAll();
        System.out.println(menuAll);
        // 创建一个map集合HashMap   k 为Long类型  V 为Department
        HashMap<Long, Menu> mapAll = new HashMap<>();
        // 遍历所有的数据放入hashmap中
        for (Menu menu : menuAll) {
            mapAll.put(menu.getId(),menu);
        }
//        System.err.println(mapAll);
        // 创建一个集合将parent为null的数据放入
        List<Menu> firstlist = new ArrayList<>();
        // 遍历
        for (Menu menu : menuAll) {
            // 顶级
            if(menu.getParentId() == null){// 封装第一层级
                firstlist.add(menu);
            }else {
                // mapAll.get(department.getParent_id())  ：通过k来获得V
                Menu parent = mapAll.get(menu.getParentId());
                // 如果为空说明 没有下级，
                if(parent != null){
                    parent.getChildren().add(menu);
                }
            }
        }
        System.err.println(firstlist);
        return firstlist;
    }
}
